package com.example.demo.demo;

import java.io.*;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @Description
 * @Author
 * @Date 2020/3/11 16:27
 **/
public class cin_txt {
    public static void main(String[] args) {
        try { // 防止文件建立或读取失败，用catch捕捉错误并打印，也可以throw
            Map<String, String> stringStringHashMap = new HashMap<>();
            /* 读入TXT文件 */
            String pathname = "C:\\Users\\Administrator\\Desktop\\无标题.csv"; // 绝对路径或相对路径都可以，这里是绝对路径，写入文件时演示相对路径
            File filename = new File(pathname); // 要读取以上路径的input。txt文件
            InputStreamReader reader = new InputStreamReader(
                    new FileInputStream(filename)); // 建立一个输入流对象reader
            BufferedReader br = new BufferedReader(reader); // 建立一个对象，它把文件内容转成计算机能读懂的语言
            String line = "";
            line = br.readLine();
            while (line != null) {
                line = br.readLine(); // 一次读入一行数据
                if(line!=null){
                    stringStringHashMap.put(line.replaceAll(",\"[0-9]+\"",""),line);
                }else {
                    System.out.println(line);
                }
            }
            pathname = "C:\\Users\\Administrator\\Desktop\\无标题1.csv"; // 绝对路径或相对路径都可以，这里是绝对路径，写入文件时演示相对路径
            filename = new File(pathname); // 要读取以上路径的input。txt文件
            reader = new InputStreamReader(
                    new FileInputStream(filename)); // 建立一个输入流对象reader
            br = new BufferedReader(reader); // 建立一个对象，它把文件内容转成计算机能读懂的语言
            line = br.readLine();
            while (line != null) {
                line = br.readLine(); // 一次读入一行数据
                if(line != null){
                    stringStringHashMap.put(line.replaceAll(",\"All\"",""),line);
                }else {
                    System.out.println(line);
                }

            }
            /* 写入Txt文件 */
            File writename = new File("C:\\Users\\Administrator\\Desktop\\无标题2.csv"); // 相对路径，如果没有则要建立一个新的output。txt文件
            writename.createNewFile(); // 创建新文件
            BufferedWriter out = new BufferedWriter(new FileWriter(writename));
            List<String> collect = stringStringHashMap.keySet().stream().sorted().collect(Collectors.toList());
            for (String value : collect) {
                out.write(stringStringHashMap.get(value)+"\r\n"); // \r\n即为换行
            }
            out.flush(); // 把缓存区内容压入文件
            out.close(); // 最后记得关闭文件

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
